﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PersianProxy.Common.Library
{
    public class Security
    {
        public static string EncodeHost(string Text)
        {
            string Host = Text.Substring(0, Text.IndexOf('/'));
            string Path = Text.Replace(Host, "");
            return Convert.ToBase64String(Encoding.ASCII.GetBytes(Host)) + Path;
        }

        public static string DecodeHost(string Text)
        {
            string Host = Text.Substring(0, Text.IndexOf('/'));
            string Path = Text.Replace(Host, "");
            return Encoding.ASCII.GetString(Convert.FromBase64String(Host)) + Path;
        }

        public static string EncodeChars(string Text)
        {
            Text = SwapChars(Text, 'a', 'b');
            Text = SwapChars(Text, 'c', 'd');
            Text = SwapChars(Text, 'e', 'f');
            Text = SwapChars(Text, 'g', 'h');
            Text = SwapChars(Text, 'i', 'j');
            Text = SwapChars(Text, 'k', 'l');
            Text = SwapChars(Text, 'm', 'n');
            Text = SwapChars(Text, 'o', 'p');
            Text = SwapChars(Text, 'q', 'r');
            Text = SwapChars(Text, 's', 't');
            Text = SwapChars(Text, 'u', 'v');
            Text = SwapChars(Text, 'w', 'y');
            Text = SwapChars(Text, 'x', 'z');

            return Text;
        }

        public static string DecodeChars(string Text)
        {
            Text = SwapChars(Text, 'b', 'a');
            Text = SwapChars(Text, 'd', 'c');
            Text = SwapChars(Text, 'f', 'e');
            Text = SwapChars(Text, 'h', 'g');
            Text = SwapChars(Text, 'j', 'i');
            Text = SwapChars(Text, 'l', 'k');
            Text = SwapChars(Text, 'n', 'm');
            Text = SwapChars(Text, 'p', 'o');
            Text = SwapChars(Text, 'r', 'q');
            Text = SwapChars(Text, 't', 's');
            Text = SwapChars(Text, 'v', 'u');
            Text = SwapChars(Text, 'y', 'w');
            Text = SwapChars(Text, 'z', 'x');

            return Text;
        }

        static string SwapChars(string Text, char A, char B)
        {
            Text = Text.Replace(A, '*');
            Text = Text.Replace(B, A);
            Text = Text.Replace('*', B);
            return Text;
        }

    }
}
